<?php

/**
 * periodo actions.
 *
 * @package    sf_sandbox
 * @subpackage periodo
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class periodoActions extends sfActions
{
    
   public function executeShow(sfWebRequest $request)
  {
    $this->periodo = Doctrine_Core::getTable('Periodo')->find(array($request->getParameter('id')));
    $this->forward404Unless($this->periodo);
  }
  public function executeIndex(sfWebRequest $request)
  {
     $this->periodosAbierto=null;
     $this->periodos = $this->getPager(PeriodoTable::getBuscarPeriodos(""), $request->getGetParameter('page'), "Periodo");
  }

  public function executeNew(sfWebRequest $request)
  {     
      
        $tipo_impuesto_id = $this->getUser()->getAttribute("TIPOIMPUESTOID");
        $periodo = new Periodo();
        $periodo->setTipoImpuestoId(1);
        $this->form = new PeriodoForm($periodo);
        $this->vto_array=array(); 
      
   }

  public function executeCreate(sfWebRequest $request)
  {
    $this->forward404Unless($request->isMethod(sfRequest::POST));

    $this->form = new PeriodoForm();

    $this->processForm($request, $this->form);
      
    $this->setTemplate('new');
  }
    
  public function executeEdit(sfWebRequest $request)
  {
    $this->forward404Unless($this->periodo = Doctrine_Core::getTable('Periodo')->find(array($request->getParameter('id'))), sprintf('Object periodo does not exist (%s).', $request->getParameter('id')));
 
    $this->vto_array=array();
    foreach($this->periodo->getPeriodoVtoAgua() as $vto){
      $this->vto_array[]= date("d-m-Y", strtotime($vto->getFechaVto()));
   
    }  
  
  $this->form = new PeriodoForm($this->periodo);
  
  }
   public function executeCerrar(sfWebRequest $request) {
   
                $this->periodos = PeriodoTable::cerrarPeriodo($request->getParameter('id'));   
                $this->redirect('periodo/index');
    }

  public function executeUpdate(sfWebRequest $request)
  {
    $this->forward404Unless($request->isMethod(sfRequest::POST) || $request->isMethod(sfRequest::PUT));
    $this->forward404Unless($periodo = Doctrine_Core::getTable('Periodo')->find(array($request->getParameter('id'))), sprintf('Object periodo does not exist (%s).', $request->getParameter('id')));
    $this->form = new PeriodoForm($periodo);
    $this->processForm($request, $this->form);
    $this->setTemplate('edit');
   
  }

  public function executeDelete(sfWebRequest $request)
  {
    $request->checkCSRFProtection();

    $this->forward404Unless($periodo = Doctrine_Core::getTable('Periodo')->find(array($request->getParameter('id'))), sprintf('Object periodo does not exist (%s).', $request->getParameter('id')));
    $periodo->delete();

    $this->redirect('periodo/index');
  }

  protected function processForm(sfWebRequest $request, sfForm $form)
  {
    
    $form->bind($request->getParameter($form->getName()), $request->getFiles($form->getName()));
    //$fvto1=date("Y-m-d", strtotime($request->getParameter("vto1")));
    if ($form->isValid())
        {
      $fvto1=date("Y-m-d", strtotime($request->getParameter("vto1")));
      $fvto2=date("Y-m-d", strtotime($request->getParameter("vto2")));
      if(strtotime( $fvto1) ) { 
      $vto_array=array();
   
      $periodo = $form->save();
     if(count($periodo->getPeriodoVtoAgua())>1){
            
            $vto_array=$periodo->getPeriodoVtoAgua();
            $vto_array[0]->setFechaVto($fvto1);
            $vto_array[0]->save();
              if(strtotime( $fvto2) ) {
               $vto_array[1]->setFechaVto($fvto2);
               $vto_array[1]->save();
              }else{ 
//                  ELIMINO LA SEGUNDA FECHA DE VTO SI VIENE EN BLANCO EL CAMPO
               $vto_array[1]->delete();
                              
              }
                               
      }elseif(count($periodo->getPeriodoVtoAgua())==1){
         $vto=$periodo->getPeriodoVtoAgua();
          $vto[0]->setFechaVto($fvto1);
            $vto[0]->save();
             if(strtotime( $fvto2) ) {
                $vto2 = new PeriodoVtoAgua();
                $vto2->setPeriodoId($periodo->getId());
                $vto2->setFechaVto($fvto2);
                $vto2->save();
             }
            
            
        }else{
            $vto1 = new PeriodoVtoAgua();
            $vto1->setPeriodoId($periodo->getId());
            $vto1->setFechaVto($fvto1);
            $vto1->save();
             if(strtotime( $fvto2) ) {
                $vto2 = new PeriodoVtoAgua();
                $vto2->setPeriodoId($periodo->getId());
                $vto2->setFechaVto($fvto2);
                $vto2->save();
             }
        }
          $this->redirect('periodo/index');        
      }else{
      
         $this->vto_array=array();
        $this->getUser()->setFlash('errorvto', "Ingrese el primer vencimiento.");
    }    

 }  
       

  }
 protected function getPager($q, $page, $model) {
        $pager = new sfDoctrinePager($model, sfConfig::get('app_nro_x_pagina_contribuyente'));
        $pager->setQuery($q);
        $pager->setPage($page);
        $pager->init();

        return $pager;
    }
     public function executeBuscarPeriodos(sfWebRequest $request) {
        
        if ($request->isMethod('post')) {
            $nombre = $request->getPostParameter("nombre");
           } else {
            $nombre = $request->getGetParameter("nombre");
          }
        $this->periodos = $this->getPager(PeriodoTable::getBuscarPeriodos($nombre), $request->getGetParameter('page'), "Periodo");
        if ($request->isXmlHttpRequest()) {
            return $this->renderPartial("periodo/listadoperiodos", array('periodos' => $this->periodos));
        }
    }
    public function executeValidar() {

      $periodo =PeriodoTable::getBuscarPeriodoAbierto(true); 

      if ($periodo==False){  
        $this->redirect("periodo/new");
      }else {$this->getUser()->setFlash('error', "Existe un periodo abierto. Cierre el periodo para dar de alta uno nuevo.");
          $this->redirect("periodo/index");
      
     
      }
    
    }
}